package final_wearebatman_model;

import final_wearebatman_view.MessageBox;

//és kapu logikája
public class AND_Gate extends Gate {

    //race condition vizsgálathoz számláló
    private int RCcount;

    //konstruktor
    public AND_Gate(String name) {
        super(name, 2, 1);
    }

    //az és kapu logikai működését megvalósító metódus
    public void operate() {
        if (this.counter > this.inputs.length) {
            if ((this.prevInput0 != this.inputs[0].getData()) || (this.prevInput1 != this.inputs[1].getData())) {
                RCcount++;
                if (RCcount > 1) {
                    MessageBox b = new MessageBox(this.name);
                    return;
                }
            }
        }        
        this.outputs[0].setData(this.inputs[0].getData() & this.inputs[1].getData());
        this.counter++; // rc vizsgálathoz a számláló növelése
        this.prevInput0 = this.inputs[0].getData();
        this.prevInput1 = this.inputs[1].getData();
        if (counter < 10) {
            this.wireOutputs[0].operate();
        }
    }

    //számláló nullázása
    public void resetCounter() {
        this.RCcount = 0;
        this.counter = 0;
    }
}
